package com.yuuko.yuukoapi.repository.system

import com.yuuko.yuukoapi.common.constant.StatusEnum
import com.yuuko.yuukoapi.model.system.Roles
import com.yuuko.yuukoapi.model.system.id
import com.yuuko.yuukoapi.model.system.status
import com.yuuko.yuukoapi.model.system.users
import org.babyfish.jimmer.spring.repository.KRepository
import org.babyfish.jimmer.sql.kt.ast.expression.eq
import org.springframework.stereotype.Repository

/**
 * <p>
 * RolesRepository 接口
 * </p>
 *
 * @author yuuko
 * @date 2025-06-20
 */
@Repository
interface RolesRepository : KRepository<Roles, String> {
    fun findAllByStatus(status: Int): List<Roles>

    // 根据用户ID查询可用的角色列表
    fun findAllByUserIdAndAndStatusIsActivated(userId: String): List<Roles> {
        return sql.createQuery(Roles::class) {
            where(table.users {
                id eq userId
            })
            where(table.status eq StatusEnum.ENABLED.value)
            select(table)
        }.execute()
    }
}

